
var express =require("express");
var router = express.Router();
var {Mvs,Prouser,Tiwen,Advise,Goods,Cart,Tianxie,Advise2,Goods2} = require("../utils/model")
var {createToken,checkToken} = require("../utils/token")
router.get("/test",(req,res)=>{
    res.json({
        code:200,
        msg:"测试接口 成功 successful "
    })
})  

router.get("/movie",(req,res)=>{
    var limit  = req.query.limit *1 || 0;
    Mvs.find({},{_id:0})
    .limit(limit)
    .sort({_id:-1})
    .then(result=>{
        res.json({
            code:200,
            msg:"获取数据成功",
            result
        })
    })
})

router.post("/login",(req,res)=>{
    var body = req.body;
    console.log(body);
    res.json({
        code:200,
        msg:"登录成功...",
        body
    })
})


// 获取 crsftoken 
router.get("/gettoken",(req,res)=>{
    // var token = createToken('wuhan');
    res.json({
        token:"token",
        msg:"获取token成功",
        type:1,
        code:200
    })
})

// 登录 
router.post("/signin",(req,res)=>{
    var body = req.body
    console.log(body);
    Prouser.findOne({
        mobile:body.mobile,
    }).then(result=>{
        if(result){
            if(result.password == body.password){
                var token  = createToken({
                    mobile:body.mobile,
                    password:body.password,
                    username:result.username,
                    roleid:result.roleid,
                })
                res.json({
                    code:200,
                    type:1,
                    msg:"登录成功",
                    token
                })
            }else{
                res.json({
                    code:200,
                    type:0,
                    msg:"登录失败,用户名和密码不匹配"
                })
            }
        }else{
            res.json({
                code:200,
                type:0,
                msg:"登录失败,用户名和密码不匹配"
            })
        }
    })
})


// 获取个人信息  token

router.post("/getuserinfo",(req,res)=>{
    checkToken(req,res,({mobile})=>{
        Prouser.findOne({
            mobile:mobile
        }).then(result=>{
            res.json({
                code:200,
                msg:"获取信息成功",
                result:result,
                type:1
            })
        })
    })
})

// 添加用户
router.post("/adduser",(req,res)=>{
    checkToken(req,res,({mobile,roleid})=>{
        var body = req.body;
        var addroleid = body.roleid;
        if(addroleid>=roleid){
            res.json({
                code:403,
                type:0,
                msg:"对不起，您不能添加比您权限高或同级的用户"
            })
        }else{
            // 添加用户
            Prouser.findOne({
                mobile:body.mobile
            }).then(data=>{
                if(data){
                    res.json({
                        code:402,
                        type:0,
                        msg:"手机号码已经存在,请确认数据"
                    })
                }else{
                    body.time = new Date();
                    Prouser.insertMany(body)
                    .then(result=>{
                        res.json({
                            code:200,
                            type:1,
                            result,
                            msg:"用户添加成功"
                        })
                    })
                }
            })
        }
    })
})

// 查询用户
router.post("/getuserlist",(req,res)=>{
    checkToken(req,res,({mobile,roleid})=>{
        Prouser.find({},{})
        .sort({_id:-1})
        .then(result=>{
            res.json({
                code:200,
                msg:"获取用户列表成功",
                result,
                type:1
            })
        })
        .catch(err=>{
            res.json({
                code:500,
                msg:"服务器异常",
                err,
                type:0
            })
        })
    })
})

// 根据_id 删除用户
router.post("/deluser",(req,res)=>{
    checkToken(req,res,({mobile,roleid})=>{
        Prouser.remove({
            _id:req.body._id
        })
        .then(result=>{
            res.json({
                code:200,
                msg:"用户删除成功",
                result,
                type:1
            })
        })
        .catch(err=>{
            res.json({
                code:500,
                msg:"服务器异常",
                err,
                type:0
            })
        })
    })
}) 


// 根据_id 修改用户
router.post("/updateuserone",(req,res)=>{
    checkToken(req,res,({mobile,roleid})=>{
        var body = {...req.body,time:new Date()}
        // delete body[_id];
        Prouser.updateMany({
            _id:req.body._id
        },{
            $set:body
        })
        .then(result=>{
            res.json({
                code:200,
                msg:"用户修改成功",
                result,
                type:1
            })
        })
        .catch(err=>{
            res.json({
                code:500,
                msg:"服务器异常",
                err,
                type:0
            })
        })
    })
}) 



// 提交体温记录
router.post("/addtiwen",(req,res)=>{
    const {
        tiwen 
    } = req.body;

    checkToken(req,res,({mobile,roleid})=>{
        Prouser.findOne({
            mobile,
        }).then(userinfo=>{
            Tiwen.insertMany({
                time:new Date(),
                mobile,
                username:userinfo.username,
                tiwen,
                ishei:"0",
                is_yin:"1"
            }).then(data=>{
                Tiwen.find({mobile},{})
                .sort({_id:-1})
                .then(result=>{
                    res.json({
                        code:200,
                        msg:"添加成功",
                        result,
                        type:1
                    })
                })
                .catch(err=>{
                    res.json({
                        code:500,
                        msg:"服务器异常",
                        err,
                        type:0
                    })
                })
            })
        })
    })

})

// 获取我的体温记录
router.post("/mytiwenlist",(req,res)=>{
    checkToken(req,res,({mobile,roleid})=>{
        Tiwen.find({
            mobile
        },{})
        .sort({_id:-1})
        .then(result=>{
            res.json({
                code:200,
                msg:"查询成功",
                result,
                type:1
            })
        })
        .catch(err=>{
            res.json({
                code:500,
                msg:"服务器异常",
                err,
                type:0
            })
        })
    })
})


// 根据_id 删除体温记录
router.post("/delOneList",(req,res)=>{
    checkToken(req,res,({mobile,roleid})=>{
        Tiwen.remove({
            _id:req.body._id
        })
        .then(result=>{
            res.json({
                code:200,
                msg:"删除成功",
                result,
                type:1
            })
        })
        .catch(err=>{
            res.json({
                code:500,
                msg:"服务器异常",
                err,
                type:0
            })
        })
    })
}) 


// 根据_id 修改体温记录
router.post("/updatetiwenone",(req,res)=>{
    checkToken(req,res,({mobile,roleid})=>{
        var body = {...req.body,time:new Date()}
        // delete body[_id];
        Tiwen.updateMany({
            _id:req.body._id
        },{
            $set:body
        })
        .then(result=>{
            res.json({
                code:200,
                msg:"修改成功",
                result,
                type:1
            })
        })
        .catch(err=>{
            res.json({
                code:500,
                msg:"服务器异常",
                err,
                type:0
            })
        })
    })
}) 

// 根据_id 修改是否检测 
router.post("/updateishei",(req,res)=>{
    checkToken(req,res,({mobile,roleid})=>{
        Tiwen.updateMany({
            _id:req.body._id
        },{
            $set:{
                ishei:req.body.ishei
            }
        })
        .then(result=>{
            res.json({
                code:200,
                msg:"修改成功",
                result,
                type:1
            })
        })
        .catch(err=>{
            res.json({
                code:500,
                msg:"服务器异常",
                err,
                type:0
            })
        })
    })
}) 



// 根据_id 修改 核酸结果 
router.post("/updateisyin",(req,res)=>{
    checkToken(req,res,({mobile,roleid})=>{
        Tiwen.updateMany({
            _id:req.body._id
        },{
            $set:{
                is_yin:req.body.is_yin
            }
        })
        .then(result=>{
            res.json({
                code:200,
                msg:"修改成功",
                result,
                type:1
            })
        })
        .catch(err=>{
            res.json({
                code:500,
                msg:"服务器异常",
                err,
                type:0
            })
        })
    })
}) 




// 获取首页的 banner
router.post("/gethomebanner",(req,res)=>{
    checkToken(req,res,({mobile,roleid})=>{
        res.json({
            msg:"获取数据成功",
            code:200,
            type:1,
            result:[
                {
                    imgUrl:"http://47.104.209.44/base/img/1.jpg",
                    text:"万众一心,抗击肺炎"
                },
                {
                    imgUrl:"http://47.104.209.44/base/img/2.jpg",
                    text:"爱满春来。武汉加油！中国加油！"
                },
                {
                    imgUrl:"http://47.104.209.44/base/img/3.jpg",
                    text:"全党动员防疫情，人人都是安全员"
                },
                {
                    imgUrl:"http://47.104.209.44/base/img/4.jpg",
                    text:"万众一心众志成城科学防治战胜新型肺炎！"
                }
            ]
        })
    })
}) 




// 提交意见
router.post("/addadvise",(req,res)=>{
    checkToken(req,res,({mobile,roleid})=>{
        console.log(req.body);
        Prouser.findOne({
            mobile,
        }).then(userinfo=>{
            Advise.insertMany({
                time:new Date(),
                mobile,
                username:userinfo.username,
                reply:[],
                ...req.body
            }).then(result=>{
                res.json({
                    code:200,
                    msg:"添加成功",
                    result,
                    type:1
                })    
            }).catch(err=>{
                res.json({
                    code:500,
                    msg:"服务器异常",
                    err,
                    type:0
                })
            })
        })
    })
})

// 获取意见列表  
router.post("/getadviselist",(req,res)=>{
    checkToken(req,res,({mobile,roleid})=>{ 
        var obj = {}
        Advise.find(obj,{})
        .sort({_id:-1})
        .then(result=>{
            res.json({
                code:200,
                msg:"意见查询成功",
                result,
                type:1
            })    
        }).catch(err=>{
            res.json({
                code:500,
                msg:"服务器异常",
                err,
                type:0
            })
        })
    })
})

// 根据_id 删除意见列表 
router.post("/delAdviseOne",(req,res)=>{
    checkToken(req,res,({mobile,roleid})=>{
        Advise.remove({
            _id:req.body._id
        })
        .then(result=>{
            res.json({
                code:200,
                msg:"意见删除成功",
                result,
                type:1
            })
        })
        .catch(err=>{
            res.json({
                code:500,
                msg:"服务器异常",
                err,
                type:0
            })
        })
    })
}) 

// 获取意见 
router.post("/getadvisebyid",(req,res)=>{
    checkToken(req,res,({mobile,roleid})=>{ 
        var obj = {
            _id:req.body._id
        }
        Advise.findOne(obj,{})
        .then(result=>{
            res.json({
                code:200,
                msg:"查询成功",
                result,
                type:1
            })    
        }).catch(err=>{
            res.json({
                code:500,
                msg:"服务器异常",
                err,
                type:0
            })
        })
    })
})

// 修改意见 
router.post("/updateadvisebyid",(req,res)=>{
    checkToken(req,res,({mobile,roleid})=>{ 
        var obj = {
            _id:req.body._id
        }
        Advise.updateMany(obj,{
            $set:{
                time:new Date(),
                title:req.body.title,
                content:req.body.content,
                category:req.body.category
            }
        })
        .then(result=>{
            res.json({
                code:200,
                msg:"修改成功",
                result,
                type:1
            })    
        }).catch(err=>{
            res.json({
                code:500,
                msg:"服务器异常",
                err,
                type:0
            })
        })
    })
})

// 提交意见回复
router.post("/addreply",(req,res)=>{
    checkToken(req,res,({mobile,roleid})=>{ 
        var {_id,username,tips} = req.body;
        Advise.findOne({
            _id
        }).then(data=>{
            var reply = data.reply || [];
            console.log(reply);
            reply.push({
                author:username,
                mobile,
                roleid,
                tips,
                time:new Date(),
                id:reply.length
            })

            Advise.updateMany({
                _id,
            },{
                $set:{
                    reply
                }
            }).then(result=>{
                res.json({
                    code:200,
                    msg:"回复成功",
                    result,
                    type:1
                })    
            }).catch(err=>{
                res.json({
                    code:500,
                    msg:"服务器异常",
                    err,
                    type:0
                })
            })
        })
    })
})

// 商品列表 
router.post("/goodlist",(req,res)=>{
    checkToken(req,res,({mobile,roleid})=>{ 
        var obj = {}
        var limit = req.body.limit || 0;
        Goods2.find(obj,{})
        .limit(limit)
        .sort({_id:-1})
        .then(result=>{
            res.json({
                code:200,
                msg:"商品查询成功",
                result,
                type:1
            })    
        }).catch(err=>{
            res.json({
                code:500,
                msg:"服务器异常",
                err,
                type:0
            })
        })
    })
})

// 商品分类去重
router.post("/goodtypelist",(req,res)=>{
    checkToken(req,res,({mobile,roleid})=>{ 
        Goods2.distinct("type")
        .then(result=>{
            res.json({
                code:200,
                msg:"商品分类查询成功",
                result,
                type:1
            })    
        }).catch(err=>{
            res.json({
                code:500,
                msg:"服务器异常",
                err,
                type:0
            })
        })
    })
})


// 商品分类去重
router.post("/goodtypelist",(req,res)=>{
    checkToken(req,res,({mobile,roleid})=>{ 
        Goods2.distinct("type")
        .then(result=>{
            res.json({
                code:200,
                msg:"商品分类查询成功",
                result,
                type:1
            })    
        }).catch(err=>{
            res.json({
                code:500,
                msg:"服务器异常",
                err,
                type:0
            })
        })
    })
})

// 获取商品详情
router.post("/getgoodone",(req,res)=>{
    checkToken(req,res,({mobile,roleid})=>{ 
        Goods2.findOne({
            _id:req.body._id
        })
        .then(result=>{
            res.json({
                code:200,
                msg:"商品查询成功",
                result,
                type:1
            })    
        }).catch(err=>{
            res.json({
                code:500,
                msg:"服务器异常",
                err,
                type:0
            })
        })
    })
})

// 添加商品到我的购物车

router.post("/addtocart",(req,res)=>{
    checkToken(req,res,({mobile,roleid})=>{ 
        const {
            goodId,
            count
        } = req.body;
        var body = req.body;
        console.log(mobile)
        Cart.findOne({
            goodId,
        })
        .then(data=>{
            if(data){
                // count 累加 ++ 
                Cart.updateMany({
                    goodId
                },{
                    $set:{
                        time:new Date()
                    },
                    $inc:{
                        count:count *1 
                    }
                }).then(result=>{
                    res.json({
                        code:200,
                        msg:"添加商品成功",
                        result,
                        type:1
                    }) 
                }) 
            }else{
                // 直接新增 
                body.time = new Date();
                body.checked = false;
                body.mobile = mobile;
                console.log(body);
                Cart.insertMany(body)
                .then(result=>{
                    res.json({
                        code:200,
                        msg:"新增商品成功",
                        result,
                        type:1
                    }) 
                }) 
            }
        })
        .catch(err=>{
            res.json({
                code:500,
                msg:"服务器异常",
                err,
                type:0
            })
        })
    })
})

// 根据 mobile 获取我的购物车信息 
router.post("/getmycart",(req,res)=>{
    checkToken(req,res,({mobile,roleid})=>{ 
        Cart.find({
            mobile
        })
        .sort({
            _id:-1
        })
        .then(result=>{
            res.json({
                code:200,
                msg:"查询成功",
                result,
                type:1
            })    
        }).catch(err=>{
            res.json({
                code:500,
                msg:"服务器异常",
                err,
                type:0
            })
        })
    })
})

// 修改数量

router.post("/changecartcount",(req,res)=>{
    checkToken(req,res,({mobile,roleid})=>{ 
        var {_id,count} = req.body;
        Cart.updateMany({
            _id
        },{
            $set:{
                count:count*1
            }
        })
        .then(result=>{
            res.json({
                code:200,
                msg:"数量更新成功",
                result,
                type:1
            })    
        }).catch(err=>{
            res.json({
                code:500,
                msg:"服务器异常",
                err,
                type:0
            })
        })
    })
})

// 修改选中 
router.post("/changecartcheck",(req,res)=>{
    checkToken(req,res,({mobile,roleid})=>{ 
        var {_id,checked} = req.body;
        var obj = {}
        if(_id){
            obj = {_id}
        }
        Cart.updateMany(obj,{
            $set:{
                checked:checked
            }
        })
        .then(result=>{
            res.json({
                code:200,
                msg:"更新成功",
                result,
                type:1
            })    
        }).catch(err=>{
            res.json({
                code:500,
                msg:"服务器异常",
                err,
                type:0
            })
        })
    })
})

// 删除
router.post("/delcartone",(req,res)=>{
    checkToken(req,res,({mobile,roleid})=>{ 
        Cart.remove({
            _id:req.body._id
        })
        .then(result=>{
            res.json({
                code:200,
                msg:"删除成功",
                result,
                type:1
            })    
        }).catch(err=>{
            res.json({
                code:500,
                msg:"服务器异常",
                err,
                type:0
            })
        })
    })
})

// 批量删除  判断选中 
router.post("/delcartcheck",(req,res)=>{
    checkToken(req,res,({mobile,roleid})=>{ 
        Cart.remove({
            mobile,
            checked:true
        })
        .then(result=>{
            res.json({
                code:200,
                msg:"批量删除成功",
                result,
                type:1
            })    
        }).catch(err=>{
            res.json({
                code:500,
                msg:"服务器异常",
                err,
                type:0
            })
        })
    })
})






// 添加查寝记录
router.post("/addtianxie",(req,res)=>{
    const {
        roomname,
        queqin,
        weisheng,
        yuanyin,
        mobile
    } = req.body;

    checkToken(req,res,({mobile,roleid})=>{
        Tianxie.insertMany({
            time:new Date(),
            roomname,
            queqin,
            weisheng,
            yuanyin,
            mobile
        }).then(data=>{
            Tianxie.find({},{})
            .sort({_id:-1})
            .then(result=>{
                res.json({
                    code:200,
                    msg:"添加成功",
                    result,
                    type:1
                })
            })
            .catch(err=>{
                res.json({
                    code:500,
                    msg:"服务器异常",
                    err,
                    type:0
                })
            })
        })
    })
})

//获取查寝记录
router.post("/mytianxielist",(req,res)=>{
    checkToken(req,res,({mobile,roleid})=>{
        Tianxie.find({},{})
            .sort({_id:-1})
            .then(result=>{
                res.json({
                    code:200,
                    msg:"查询成功",
                    result,
                    type:1
                })
            })
            .catch(err=>{
                res.json({
                    code:500,
                    msg:"服务器异常",
                    err,
                    type:0
                })
            })
    })
})

// 根据_id 删除查寝记录
router.post("/delTheList",(req,res)=>{
    checkToken(req,res,({mobile,roleid})=>{
        Tianxie.remove({
            _id:req.body._id
        })
        .then(result=>{
            res.json({
                code:200,
                msg:"删除成功",
                result,
                type:1
            })
        })
        .catch(err=>{
            res.json({
                code:500,
                msg:"服务器异常",
                err,
                type:0
            })
        })
    })
}) 

// 根据_id 修改查寝记录
router.post("/updatetianxieone",(req,res)=>{
    checkToken(req,res,({mobile,roleid})=>{
        var body = {...req.body,time:new Date()}
        // delete body[_id];
        Tianxie.updateMany({
            _id:req.body._id
        },{
            $set:body
        })
        .then(result=>{
            res.json({
                code:200,
                msg:"修改成功",
                result,
                type:1
            })
        })
        .catch(err=>{
            res.json({
                code:500,
                msg:"服务器异常",
                err,
                type:0
            })
        })
    })
})

// 提交报修
router.post("/addadvise2",(req,res)=>{
    checkToken(req,res,({mobile,roleid})=>{
        console.log(req.body);
        Prouser.findOne({
            mobile,
        }).then(userinfo=>{
            Advise2.insertMany({
                time:new Date(),
                mobile,
                username:userinfo.username,
                roomname:userinfo.roomname,
                reply:[],
                ...req.body
            }).then(result=>{
                res.json({
                    code:200,
                    msg:"添加成功",
                    result,
                    type:1
                })    
            }).catch(err=>{
                res.json({
                    code:500,
                    msg:"服务器异常",
                    err,
                    type:0
                })
            })
        })
    })
})

// 获取报修列表  
router.post("/getadviselist2",(req,res)=>{
    checkToken(req,res,({mobile,roleid})=>{ 
        var obj = {}
        Advise2.find(obj,{})
        .sort({_id:-1})
        .then(result=>{
            res.json({
                code:200,
                msg:"报修查询成功",
                result,
                type:1
            })    
        }).catch(err=>{
            res.json({
                code:500,
                msg:"服务器异常",
                err,
                type:0
            })
        })
    })
})

// 根据_id 删除报修列表 
router.post("/delAdviseOne2",(req,res)=>{
    checkToken(req,res,({mobile,roleid})=>{
        Advise2.remove({
            _id:req.body._id
        })
        .then(result=>{
            res.json({
                code:200,
                msg:"报修删除成功",
                result,
                type:1
            })
        })
        .catch(err=>{
            res.json({
                code:500,
                msg:"服务器异常",
                err,
                type:0
            })
        })
    })
}) 

// 获取报修 
router.post("/getadvisebyid2",(req,res)=>{
    checkToken(req,res,({mobile,roleid})=>{ 
        var obj = {
            _id:req.body._id
        }
        Advise2.findOne(obj,{})
        .then(result=>{
            res.json({
                code:200,
                msg:"查询成功",
                result,
                type:1
            })    
        }).catch(err=>{
            res.json({
                code:500,
                msg:"服务器异常",
                err,
                type:0
            })
        })
    })
})

// 修改报修 
router.post("/updateadvisebyid2",(req,res)=>{
    checkToken(req,res,({mobile,roleid})=>{ 
        var obj = {
            _id:req.body._id
        }
        Advise2.updateMany(obj,{
            $set:{
                time:new Date(),
                title:req.body.title,
                content:req.body.content,
                category:req.body.category
            }
        })
        .then(result=>{
            res.json({
                code:200,
                msg:"修改成功",
                result,
                type:1
            })    
        }).catch(err=>{
            res.json({
                code:500,
                msg:"服务器异常",
                err,
                type:0
            })
        })
    })
})

// 提交报修回复
router.post("/addreply2",(req,res)=>{
    checkToken(req,res,({mobile,roleid})=>{ 
        var {_id,username,tips} = req.body;
        Advise2.findOne({
            _id
        }).then(data=>{
            var reply = data.reply || [];
            console.log(reply);
            reply.push({
                author:username,
                mobile,
                roleid,
                tips,
                time:new Date(),
                id:reply.length
            })

            Advise2.updateMany({
                _id,
            },{
                $set:{
                    reply
                }
            }).then(result=>{
                res.json({
                    code:200,
                    msg:"回复成功",
                    result,
                    type:1
                })    
            }).catch(err=>{
                res.json({
                    code:500,
                    msg:"服务器异常",
                    err,
                    type:0
                })
            })
        })
    })
})

// 上传头像  
// multer 
var multer = require("multer");
var storage = multer.diskStorage({
    destination: function (req, file, cb) {   // 头像存放的目录 
        cb(null, './public/avatar')    // . 文件路径
    },
    filename: function (req, file, cb) {  // 新的文件名 
        cb(null, Date.now()+file.originalname);  //  originalname 原文件名 
    }
})

var upload  =  multer({ storage: storage }).any();  // 可以上传任何格式的图片


router.post("/uploadpic",upload,(req,res)=>{
    checkToken(req,res,({mobile,roleid})=>{
       
        if(req.files){
            var avatar = req.files[0].path;  // 头像的服务器地址 
            Prouser.updateMany({
                mobile
            },{
                $set:{
                    avatar
                }
            }).then(result=>{
                res.json({
                    code:200,
                    msg:"头像上传成功",
                    type:1,
                    avatar
                })
            }).catch(err=>{
                res.json({
                    code:500,
                    msg:"服务器异常",
                    type:0
                })
            })
            
        }else{
            res.json({
                code:200,
                msg:"头像上传失败",
                type:0
            })
        }
    })
})

// 获取首页的 banner
router.post("/gethomebanner2",(req,res)=>{
    checkToken(req,res,({mobile,roleid})=>{
        res.json({
            msg:"获取数据成功",
            code:200,
            type:1,
            result:[
                {
                    imgUrl:"https://bpic.i588ku.com//back_origin_min_pic/19/09/23/0e1dd92ad085166e0684bf3f39e590ad.jpg",
                },
                {
                    imgUrl:"https://bpic.i588ku.com//back_origin_min_pic/20/01/16/55a19d17849f5ba70113c92881697d8f.jpg",
                },
                {
                    imgUrl:"https://bpic.i588ku.com//back_origin_min_pic/19/09/23/da623dd3c8258a2296e47e1d29d73046.jpg",
                },
                {
                    imgUrl:"https://bpic.i588ku.com//back_origin_min_pic/19/10/22/8cd943fd83af3a6ba56d936dff2bd457.jpg",
                }
            ]
        })
    })
})


module.exports = router;